ห้องปฏิบัติการ: เครื่องคำนวณเส้นทางไดจ์กสตรา

เป้าหมาย 🎯

  • งานที่ต้องทำ: ค้นหาเส้นทางที่ดีที่สุดจากเซิร์ฟเวอร์ต้นทาง `S` ไปยังเซิร์ฟเวอร์อื่นๆ ทุกตัว
  • ผลลัพธ์ที่ต้องการ: สำหรับเซิร์ฟเวอร์ทุกตัว `i` คุณต้องคำนวณ:
    • ความหน่วงรวม (Latency รวม): ค่าใช้จ่ายต่ำสุด (เส้นทางที่สั้นที่สุด) จาก `S` ไปยัง `i`
    • _hop ถัดไป: เซิร์ฟเวอร์ตัวแรกในเส้นทางที่สั้นที่สุดนั้น
  • ตัวอย่าง: หากเส้นทางที่ดีที่สุดจาก `S` ไปยัง `D` คือ `S -> A -> B -> D` แล้ว **hop ถัดไป** คือ `A`

โครงข่ายเครือข่าย 💾

เราจะใช้ รายการเชื่อมโยง (Adjacency List) เพื่อเก็บข้อมูลโครงข่ายเครือข่าย
  • เซิร์ฟเวอร์คือ โหนด.
  • การเชื่อมต่อคือ เส้นเชื่อมสองทิศทาง (bi-directional edges).
  • ความหน่วงคือ น้ำหนักบวก.
// เชื่อมต่อ: 0-1 (10 มิลลิวินาที), 0-2 (3 มิลลิวินาที)
adj = [
0:[(1, 10), (2, 3)],
1:[(0, 10)],
2:[(0, 3)],
...
]

รูปแบบผลลัพธ์ ⚙️

คุณต้องพิมพ์ `V` บรรทัด แต่ละบรรทัด `i` สอดคล้องกับเซิร์ฟเวอร์ `i`

  • [ความหน่วง] [hop ถัดไป]

    สำหรับโหนดที่เข้าถึงได้

  • 0 -1

    หากโหนดนั้นเป็นต้นทาง `S` เอง

  • -1 -1

    หากโหนดไม่สามารถเข้าถึงได้จาก `S`